////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                            //
//                                                         WNProject                                                          //
//                                                                                                                            //
//            This file is distributed under the BSD 2-Clause open source license. See License.txt for details.               //
//                                                                                                                            //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __WN_CONTAINERS_RESOURCE_BASE_H__
#define __WN_CONTAINERS_RESOURCE_BASE_H__

#include "WNCore/inc/WNPlatform.h"
#include "WNCore/inc/WNTypes.h"
#include "WNCore/inc/WNAtomic.h"

namespace WNContainers {
    class WNResourceBase {
    public:
        WN_INLINE WNResourceBase();

        WN_INLINE WN_VOID AddRef();
        WN_INLINE WN_BOOL RemoveRef();
        WN_INLINE WN_ATOM_T GetRefs();

    private:
        WN_ATOM_T mRefCount;
    };
}

#include "WNContainers/inc/WNResourceBase.inl"

#endif // __WN_CONTAINERS_RESOURCE_BASE_H__